package com.fireworks.geoevents;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

import com.fireworks.geoevents.gui.DialogsManager;
import com.fireworks.geoevents.gui.DialogsManager.NoticeDialogListener;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;

/**
 * Implementa la pantalla de creacion de un nuevo evento.
 * 
 * @author Fireworks
 * @version 28/11/2012
 */
public class NewEventActivity extends FragmentActivity implements
NoticeDialogListener {

	/*-----------------------------------*/
	/* /////////// ATRIBUTOS /////////// */
	/*-----------------------------------*/
	private DialogsManager dialogManager = null;
	private Button buttonDate = null;
	private Button buttonTime = null;
	private Button buttonSave = null;
	private Button buttonExit = null;

	/*---------------------------------*/
	/* /////////// METODOS /////////// */
	/*---------------------------------*/
	@SuppressLint("SimpleDateFormat")
	@Override
	protected void onCreate(Bundle savedInstanceState) {

		// Se establece la interfaz de la pantalla.
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_new_event);

		// Se rellena el spinner para determina la categoria del evento.
		Spinner spinner = (Spinner) findViewById(R.id.category_spinner);
		ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
				this, R.array.category_spinner_items,
				android.R.layout.simple_spinner_item);
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		spinner.setAdapter(adapter);

		// Se recupera la referencia a los botones de la pantalla.
		buttonDate = (Button) findViewById(R.id.date_button);
		buttonTime = (Button) findViewById(R.id.time_button);
		buttonSave = (Button) findViewById(R.id.save_button);
		buttonExit = (Button) findViewById(R.id.exit_button);

		// Se establece el oyente de los botones.
		NewEventClickListener listener = new NewEventClickListener();
		buttonDate.setOnClickListener(listener);
		buttonTime.setOnClickListener(listener);
		buttonSave.setOnClickListener(listener);
		buttonExit.setOnClickListener(listener);

		// Se inicializan los botones de fecha y hora con la fecha y hora del
		// sistema.
		DateFormat df = new SimpleDateFormat("dd/MM/yy");
		String formattedDate = df.format(new Date());
		buttonDate.setText(formattedDate);

		df = new SimpleDateFormat("hh:mm");
		formattedDate = df.format(new Date());
		buttonTime.setText(formattedDate);

	} // Fin metodo 'onCreate'

	@Override
	public void onDialogPositiveClick(int type, String date_time) {

		if (type == 1) { // SELECCION DE FECHA
			buttonDate.setText(date_time);
		} else if (type == 2) { // SELECCION DE HORA
			buttonTime.setText(date_time);
		}

	} // Fin metodo 'onDialogPositiveClick'

	@Override
	public void onDialogNegativeClick(int type, String date_time) {

	} // Fin metodo 'onDialogNegativeClick'

	/*-----------------------------------------*/
	/* /////////// CLASES INTERNAS /////////// */
	/*-----------------------------------------*/
	/**
	 * Oyente encargado de gestionar las pulsaciones sobre los botones de la
	 * pantalla.
	 * 
	 * @author Fireworks
	 * @version 3 - Diciembre - 2012
	 */
	private class NewEventClickListener implements View.OnClickListener {

		/*---------*/
		/* METODOS */
		/*---------*/
		/**
		 * Se ejecuta cuando alguno de los elementos que gestiona es pulsado.
		 */
		@Override
		public void onClick(View v) {

			// Se evalua que boton de la pantalla fue seleccionado.
			switch (v.getId()) {
			case R.id.date_button: { // FECHA
				DialogsManager.setType(1);
				dialogManager = DialogsManager.newInstance();
				dialogManager.setCancelable(false);
				dialogManager.show(getSupportFragmentManager(), "date_dialog");
				break;
			}
			case R.id.time_button: { // HORA
				DialogsManager.setType(2);
				dialogManager = DialogsManager.newInstance();
				dialogManager.setCancelable(false);
				dialogManager.show(getSupportFragmentManager(), "time_dialog");
				break;
			}
			case R.id.save_button: { // GUARDAR
				break;
			}
			case R.id.exit_button: { // SALIR
				break;
			}
			}

		} // Fin metodo 'onClick'

	} // Fin clase interna 'NewEventClickListener'

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {

		MenuInflater inflater = getMenuInflater();
		inflater.inflate(R.menu.activity_new_event, menu);
		return true;

	} // Fin metodo 'onCreateOptionsMenu'

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {

		// Se comprueba que elemento del menu fue seleccionado.
		switch (item.getOrder()) {
		case 100: // INICIO
			startActivity(new Intent(NewEventActivity.this, MainActivity.class));
			break;
		case 200: // FAVORITOS
			startActivity(new Intent(NewEventActivity.this, FavoritesActivity.class));
			break;
		case 300: // AJUSTES
			startActivity(new Intent(NewEventActivity.this, SettingsActivity.class));
			break;
		case 400: // AYUDA
			break;
		}
		return super.onOptionsItemSelected(item);

	} // Fin metodo 'onCreateOptionsMenu'

} // Fin clase 'NewEventActivity'
